import axios from 'axios'
import store from '/@/store'

// create an axios instance
const service = axios.create({
	baseURL: '/api',
	// withCredentials: true, // send cookies when cross-domain requests
	timeout: 5000
})

// request interceptor
service.interceptors.request.use(
	(config) => {
		// if (store.getters.token) {
			// let each request carry token
			// ['X-Token'] is a custom headers key
			// please modify it according to the actual situation
			// config.headers['X-Token'] = getStorage('Token')
		// }
		return config
	},
	(error) => {
		console.log(error)
		return Promise.reject(error)
	}
)

// response interceptor
service.interceptors.response.use(
	(response) => {
		const res = response.data

		// if the custom code is not 20000, it is judged as an error.
		if (res.code !== 200) {
			// 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
			if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
				// message.error('重新登录')
				store.dispatch('user/regetStorage').then(() => {
					location.reload()
				})
			}
			return Promise.reject(new Error(res.message || 'Error'))
		} else {
			return res
		}
	},
	(error) => {
		console.log('err' + error)
		return Promise.reject(error)
	}
)

export default service
